home *** CD-ROM | disk | FTP | other *** search
- # Verschlüsselt die Zeichenkette 's' durch Rotation um 13
- # Buchstaben. Liefert den verschlüsselten Text zurück.
- rot13(s)
- begin
- set len to @s; # Länge von 's'
- set i to 0;
- while ( i < len )
- begin
- set c to s[i]; # Betrachte 'i'-tes Zeichen
- if ( c >= 65 && c <= 90 ) # Großbuchstabe?
- begin
- set c to c - 65; # Falls ja, verschieben
- set c to (c + 13) % 26;
- set c to c + 65;
- end
- else
- begin
- if ( c >= 97 && c <= 122 ) # Kleinbuchstabe?
- begin
- set c to c - 97; # Falls ja, verschieben
- set c to (c + 13) % 26;
- set c to c + 97;
- end
- end # Sonst in Ruhe lassen
- set s[i] to c; # Verschobenes Zeichen einsetzen
- set i to i + 1; # nächstes Zeichen
- end
- return s; # Den verschlüsselten Text zurückgeben
- end
-
- # Testet das Unterprogramm 'rot13'
- rot13test()
- begin
- while ( 1 ) # Ewige Schleife
- begin
- lprint('String, bitte');
- set s to inputline();
- if ( s == '#' ) # Abbruch, wenn '#' eingegeben
- break;
- set t to rot13(s); # Verschlüsseln
- lprint(t); # und ausgeben
- set t to rot13(t); # Wieder entschlüsseln
- lprint(t); # und ausgeben
- end
- end
-
- # Wendet 'rot13' auf einen selektierten
- # Block im obersten Fenster an.
- rot13block()
- begin
- tempcut(-1, 0); # Befördert den selektierten Block in
- # den ersten temporären Puffer
- set l to buflines(-1);
- # Bearbeite alle Zeilen des Puffers
- set i to 0;
- while ( i < l )
- begin
- set s to rot13(bufgetline(-1, i));
- # Verschlüssele jede Zeile
- bufputline(-1, i, s);
- set i to i + 1; # Weiter bei der nächsten Zeile
- end
- temppaste(-1, 0); # Füge verschlüsselten Text wieder ein
- end
-
-